@怪人
2年前 提问
1个回答
什么是linux系统中的用户态
一颗小胡椒
2年前
用户态提供应用程序运行的空间,为了使应用程序访问到内核管理的资源,例如CPU,内存,I/O等。用户态只能受限的访问内存, 且不允许访问外设(硬盘、网卡等);内核态CPU可以访问内存所有数据, 包括外设,且可以将自己从一个程序切换到另一个程序。
内核态本质是内核,一种特殊的软件程序,用于控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。
用户态切换到内核态的具体步骤:
从当前进程的描述符中提取其内核栈的ss0及esp0信息。
使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一条指令。
将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始执行中断处理程序,这时就转到了内核态的程序执行了。